Virtualization of communications networks can be used to allow hardware and software to be decoupled from one another. Decoupling hardware and software can be used to give networks, network operators, network engineers, and/or other entities greater flexibility with regard to application placement, hardware placement, and the like. In particular, some network functions traditionally may have been tightly coupled to specific hardware. For example, routing functions may be tightly coupled to hardware such as a hardware router.
Modern trends in networking, however, may allow these functions and their corresponding hardware to be decoupled from one another. Thus, a generic server computer may host a virtual machine, and a function for a particular service or function can be loaded to and/or hosted by the server computer to provide the functionality associated with the previously-tightly-coupled-together hardware and software.
Because of the flexibility that may be granted by virtualization, network operators and/or planners may relocate applications, services, or other functionality from time to time for various purposes. For example, if demand for a service exceeds capabilities of hardware resources currently allocated to support the functionality, the service may be moved to other resources, the resources may be scaled, or the like. Scaling resources, relocating services, and/or instantiating new resources to support a service or other functionality can be expensive in terms of computing power, storage resources, bandwidth, or the like. Thus, network operators and/or other entities may attempt to carefully select hardware resources to host applications or other functionality before instantiating the resources to reduce costs associated with those resources and/or applications.